Write-Host "Configuring DNS suffix search list..." # Read suffixes from script arguments $Suffixes = @() for ($i = 0; $i -lt $args.Count; $i++) { if (![string]::IsNullOrWhiteSpace($args[$i])) { $Suffixes += $args[$i] } } # Check if at least one suffix is provided if ($Suffixes.Count -eq 0) { throw "No DNS suffixes provided in script arguments." } $ValidSuffixPattern = '^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$' $ValidatedSuffixes = @() foreach ($suffix in $Suffixes) { if ($suffix -match $ValidSuffixPattern) { $ValidatedSuffixes += $suffix } else { Write-Host "[ERROR] Invalid DNS suffix format: $suffix" throw "Invalid DNS suffix: $suffix. Must be a valid domain name." } } $OriginalSuffixes = (Get-DnsClientGlobalSetting).SuffixSearchList try { Set-DnsClientGlobalSetting -SuffixSearchList $ValidatedSuffixes -ErrorAction Stop Write-Host "DNS suffix search list configured successfully." } catch { Write-Host "[ERROR] Failed to set DNS suffixes: $($_.Exception.Message)" # Rollback to original Set-DnsClientGlobalSetting -SuffixSearchList $OriginalSuffixes -ErrorAction SilentlyContinue throw } Write-Host "Refreshing Group Policy..." # Refresh Group Policy gpupdate /force Write-Host "Group Policy updated successfully."